package com.changgou.file.controller;

import com.changgou.entity.Result;
import com.changgou.entity.StatusCode;
import com.changgou.file.util.FastDFSClient;
import com.changgou.file.util.FastDFSFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 *
 */
@RestController
@RequestMapping("/file")
public class FileController {


    private Logger logger = LoggerFactory.getLogger(getClass());
    @PostMapping
    public Result upload(@RequestParam("file") MultipartFile file){



        try {
            String fileName = file.getOriginalFilename();//获取文件名11.jpg
            String extName = fileName.substring(fileName.lastIndexOf("."));

           byte[] fileContenxt = file.getBytes();

        //构建一个fastDFSFile
        FastDFSFile fastDFSFile = new FastDFSFile(fileName , fileContenxt, extName);
        String[] uploadResult = FastDFSClient.upload(fastDFSFile);
        if (uploadResult!=null&&uploadResult.length==2){
            String groupName = uploadResult[0];//获取文件组名
            String remoteFilePath = uploadResult[1];
            logger.info("文件地址,remoteFilePath:{}",remoteFilePath);
            //TODO 将路径存储到数据库表中
            String url = FastDFSClient.getTrackerUrl() +groupName+ "/" +remoteFilePath;
            logger.info("上传成功,url:{}",url );
            return new Result(true, StatusCode.OK, "文件上传成功",url);
        }else {
            logger.error("上传失败,fileName:{}",fileName );
            return new Result(false, StatusCode.ERROR, "文件上传失败");

        }
        } catch (IOException e) {
            e.printStackTrace();
            return new Result(false, StatusCode.ERROR, "文件上传失败");
        }

    }
}
